﻿using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;

namespace AlgorithmTest
{
    // T_[四个数字排序]_[算法名]
    public class T_0151_BuildArray : IAlgorithm
    {
        // 基于排列构建数组

        // 给你一个 从 0 开始的排列 nums（下标也从 0 开始）。请你构建一个 同样长度 的数组 ans ，其中，对于每个 i（0 <= i < nums.length），都满足 ans[i] = nums[nums[i]] 。返回构建好的数组 ans 。
        // 从 0 开始的排列 nums 是一个由 0 到 nums.length - 1（0 和 nums.length - 1 也包含在内）的不同整数组成的数组。

        // 提示：
        //  1 <= nums.length <= 1000
        //  0 <= nums[i] < nums.length
        //  nums 中的元素 互不相同

        public void Test()
        {
            // 算法参数定义
            var nums = new int[] { 1, 2, 3, 4, 5 };
            // 算法执行与打印
            var res = BuildArray(nums);
            foreach (var item in res)
            {
                Console.Write(item + " ");
            }
        }

        // 算法
        public int[] BuildArray(int[] nums)
        {
            var res = new int[nums.Length];
            for (int j = 0; j < nums.Length; j++)
                res[j] = nums[nums[j]];
            return res;
        }
    }
}
